package com.zw.a.basic.a12.demo07_reader_and_writer;

import java.io.*;

//案例: 演示字符流入门.
/*
    技巧: 记忆
        1. Stream结尾的都是字节流, Reader或者Writer结尾的都是字符流.

    字符流简介:
        字符流 = 字节流 + 编码表

        实现方式:
            方式一: 通过转换流,  把 字节流 和 编码表整合到一起.
                InputStreamReader  和  OutputStreamWriter
            方式二: 直接使用封装好的字符流.
                FileReader 和 FileWriter
 */
public class Demo03 {
    public static void main(String[] args) throws IOException {
        //方式一: 通过转换流,  把 字节流 和 编码表整合到一起.    了解即可.
       /* InputStreamReader isr = new InputStreamReader(new FileInputStream("day12/data/1.txt"), "utf-8");
        OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("day12/data/2.txt"), "utf-8");*/

        //字符流拷贝文件, 一次读写一个字符.
        //方式二: 直接使用封装好的字符流.
        //1. 创建输入流对象, 关联数据源文件.
        FileReader fr = new FileReader("day12/data/1.txt");     //只能用默认码表读.
        //2. 创建输出流对象, 关联目的地文件.
        FileWriter fw = new FileWriter("day12/data/2.txt");     //只能用默认码表写.
        //3. 定义变量, 记录读取到的内容或者有效字节(符)数.
        int len = 0;
        //4. 循环读取,只要条件满足就一直读, 并将读取到的内容赋值给变量.
        while ((len = fr.read()) != -1) {
            //5. 将读取到的内容写入到目的地文件中.
            fw.write(len);
        }
        //6. 关流, 释放资源.
        fr.close();
        fw.close();
    }
}
